/**
 * 工具
 */


export default class Utils {

    /**
         * 获取不重复的随机数
         * @param minValue 最小值
         * @param maxValue 最大值
         * @param valueNum 随机个数
         */
    static getRandomValueDif(minValue: number, maxValue: number, valueNum: number) {
        // 全部随机数值  
        let allNums = new Array;

        // 判断获取随机数个数  
        let size = valueNum ? (valueNum > maxValue - minValue + 1 ? maxValue - minValue + 1 : valueNum) : 1;

        // 生成随机数值区间数组  
        for (let i = minValue, k = 0; i <= maxValue; i++ , k++) {
            allNums[k] = i;
        }

        let arr = []

        // 随机从数组里面取值
        allNums.sort(function () { return 0.5 - Math.random(); });
        for (let j = 0; j < size; j++) {
            let index = Math.floor(Math.random() * allNums.length);
            arr.push(allNums[index]);
            let tmp = allNums[index];
            allNums[index] = allNums[allNums.length - 1];
            allNums[allNums.length - 1] = tmp;
            allNums.pop();
        }

        return arr;
    }                                                           

    /**
     * 获取范围内的随机数
     * @param minValue 最小值
     * @param maxValue 最大值
     */
    static getRangeRandom(minValue: number, maxValue: number) {
        // 获取数组从第一个开始到指定个数的下标区间  
        return Utils.getRandomValueDif(minValue, maxValue, 1)[0];
    }

    /**
     * 数字转时间格式
     * @param sec 
     * @returns 
     */
    static secondsFormat(sec, havehour:boolean){
        let hour = Math.floor(sec / 3600);
        let minute = Math.floor((sec - hour * 3600) / 60);
        let second = sec - hour * 3600 - minute * 60;

        let hour1 = ''
        let minute1 = ''
        let second1 = ''

        if (hour < 10) {
            hour1 = "0" + hour;
        }else{
            hour1 = "" + hour;
        }
        if (minute < 10) {
            minute1 = "0" + minute;
        }else{
            minute1 = "" + minute;
        }
        if (second < 10) {
            second1 = "0" + second;
        }else{
            second1 = "" + second;
        }
        
        if(havehour){
            return hour1 + ":" + minute1 + ":" + second1;
        }else{
            return minute1 + ":" + second1;
        }
        
    }

    /**
     * 版本号比较
     * @param v1 
     * @param v2 
     * @returns 
     */
     static compareVersion(v1, v2) {
        v1 = v1.split('.')
        v2 = v2.split('.')
        const len = Math.max(v1.length, v2.length)
      
        while (v1.length < len) {
          v1.push('0')
        }
        while (v2.length < len) {
          v2.push('0')
        }
      
        for (let i = 0; i < len; i++) {
          const num1 = parseInt(v1[i])
          const num2 = parseInt(v2[i])
      
          if (num1 > num2) {
            return 1
          } else if (num1 < num2) {
            return -1
          }
        }
      
        return 0
    }
    // const version = wx.getSystemInfoSync().SDKVersion
    // if (compareVersion(version, '2.3.0') >= 0) {
    // wx.startGyroscope()
    // } else {
    // // 如果希望用户在最新版本的客户端上体验您的小程序，可以这样子提示
    // wx.showModal({
    //     title: '提示',
    //     content: '当前微信版本过低，无法使用该功能，请升级到最新微信版本后重试。'
    // })
    // }

    //关卡设计公式 
    // 并设置等级1~4、5~9、10~14、15~n
    // Ø 第一个难度段，每升一级所需任务数增加1个，可得到公式：y1=x+2； 3,4,5,6
    // Ø 第二个难度段，每升一级所需任务数增加2,可得到公式y2=2（x-4）+5； 7,9,11,13,15
    // Ø 第三个难度段，每升一级所需任务数增加4个，可得到公式为y3=4（x-9）+13； 17,21,25,29,33
    // Ø 第四个难度段，每升一级所需任务数为6个,可得到公式，y4=6（x-14）+31。37,43,49
  /**
   * 获取基本变化数据
   * @param no 
   * @param jifen 
   * @returns 
   */
  static getBaseChangeData(no,jifen?){
    let jishu = 20 //20   //基数分
    if(jifen) jishu = jifen
    let score = 0
    let hard = 0
    if(1<=no && no<=4){
        hard = no+2
    }else if(5<=no && no<=9){
        hard =2*(no-4)+5
    }else if(10<=no && no<=14){
        hard = 4*(no-9)+13
    }else if(15<= no){
        hard = 6*(no-14)+31
    }
    score = hard*jishu
    return score
  }
}
